/**
 * BM96 主持人调度（二）
 */

/**
 * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
 *
 * 计算成功举办活动需要多少名主持人
 * @param n int整型 有n个活动
 * @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间，startEnd[i][1]表示第i个活动的结束时间
 * @return int整型
 */
export function minmumNumberOfHost(n: number, startEnd: number[][]): number {
  // write code here
  let start = startEnd.map((meeting) => meeting[0]);
  let end = startEnd.map((meeting) => meeting[1]);
  start.sort((a, b) => a - b);
  end.sort((a, b) => a - b);

  let count = 0;
  let endIndex = 0;
  for (let index = 0; index < n; index++) {
    if (start[index] >= end[endIndex]) {
      // got host
      endIndex++;
    } else {
      // new host
      count++;
    }
  }
  return count;
}

console.log(
  minmumNumberOfHost(34, [
    [547, 612],
    [417, 551],
    [132, 132],
    [168, 446],
    [95, 747],
    [187, 908],
    [115, 712],
    [15, 329],
    [612, 900],
    [3, 509],
    [181, 200],
    [562, 787],
    [136, 268],
    [36, 784],
    [533, 573],
    [165, 946],
    [343, 442],
    [127, 725],
    [557, 991],
    [604, 613],
    [633, 721],
    [287, 847],
    [414, 480],
    [428, 698],
    [437, 616],
    [475, 932],
    [652, 886],
    [19, 992],
    [132, 543],
    [390, 869],
    [754, 903],
    [284, 925],
    [511, 951],
    [272, 739],
  ])
);
